package com.example.model.api;

import cn.hutool.core.util.StrUtil;
import com.example.utils.I18nMessageTool;

public final class ResultBuilder<T> { // 添加泛型支持

  private Result<T> result;

  private ResultBuilder() {
    result = new Result<>();
  }

  public static <T> ResultBuilder<T> aResult() { // 调整静态方法以支持泛型
    return new ResultBuilder<>();
  }

  public ResultBuilder<T> code(Integer code) {
    result.setCode(code);
    return this;
  }

  /**
   * 根据提供的键查找国际化消息，若找不到则返回默认消息。
   */
  public ResultBuilder<T> msg(String key, String defaultMessage) {
    String translatedMsg = I18nMessageTool.translate(key);
    result.setMessage(StrUtil.isNotBlank(translatedMsg) ? translatedMsg : defaultMessage);
    return this;
  }

  /**
   * 直接设置消息或尝试翻译给定的消息。
   */
  public ResultBuilder<T> msg(String msg) {
    result.setMessage(I18nMessageTool.translate(msg));
    return this;
  }

  public ResultBuilder<T> data(T data) {
    result.setData(data);
    return this;
  }

  public Result<T> build() {
    return result;
  }
}